package modelo;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import modelo.query.InvalidQueryException;
import modelo.reglas.engine.Seller;

public class Cupon implements Comparable<Cupon> {

	private String codigo;
	private Date fechaCreacion;
	private BigDecimal monto;

	public Cupon() {
	}

	public Cupon(String codigo, Date fechaCreacion, BigDecimal monto) {
		this.codigo = codigo;
		this.fechaCreacion = fechaCreacion;
		this.monto = monto;
	}

	public Cupon(String codigo, List<Oferta> availableOffers, OrdenDeCompra ordenCompra) {
		this.codigo = codigo;

		this.monto = BigDecimal.ZERO;
		try {
			this.monto = Seller.obtainCuponTotalOfBuyOrder(availableOffers, ordenCompra);
		} catch (InvalidQueryException e) {
			// No deberia llegar nunca aca!
			e.printStackTrace();
		}

		this.fechaCreacion = ordenCompra.getFechaOrden();
	}

	public String getCodigo() {
		return codigo;
	}

	public Date getFechaCreacion() {
		return fechaCreacion;
	}

	public BigDecimal getMonto() {
		return monto;
	}

	@Override
	public int compareTo(Cupon o) {
		if (o instanceof Cupon) {
			Cupon p = (Cupon) o;

			return codigo.compareTo(p.codigo);
		}
		return -1;
	}

}
